import {
  G3vObjBase
} from "@g3xObjBase"
import {
  autorun,
  reaction,
  intercept,
  extendObservable,
  computed
} from 'mobx';
import * as g3xUtils from "@g3x/utils";

  /* 248 */
var RotatableObjectLike = function(_XbsjBase) {
  // (0, _inherits3.default)(RotatableObjectLike, _XbsjBase);

  function RotatableObjectLike(realObject, positionProperty, rotationProperty) {
    (0, _classCallCheck3.default)(this, RotatableObjectLike);

    var _this = (0, _possibleConstructorReturn3.default)(this, (RotatableObjectLike.__proto__ || (0,
      _getPrototypeOf2.default)(RotatableObjectLike)).call(this));

    (0, _mobx.extendObservable)(_this, {
      position: [0, 0, 0],
      rotation: [0, 0, 0]
    });

    _this._realObject = realObject;
    _this._positionProperty = positionProperty;
    _this._rotationProperty = rotationProperty;

    _this._disposers = [];
    _this._disposers.push((0, _bind2.default)(_this, 'position', realObject, positionProperty));
    _this._disposers.push((0, _bind2.default)(_this, 'rotation', realObject, rotationProperty));
    return _this;
  }

  // (0, _createClass3.default)(RotatableObjectLike, [{
  //   key: 'destroy',
  //   value: function destroy() {
  //     this._disposers.forEach(function(d) {
  //       return d();
  //     });
  //     this._disposers.lenght = 0;

  //     return (0, _get3.default)(RotatableObjectLike.prototype.__proto__ || (0, _getPrototypeOf2.default)
  //       (RotatableObjectLike.prototype), 'destroy', this).call(this);
  //   }
  // }, {
  //   key: 'realObject',
  //   get: function get() {
  //     return this._realObject;
  //   }
  // }, {
  //   key: 'positionProperty',
  //   get: function get() {
  //     return this._realProperty;
  //   }
  // }, {
  //   key: 'rotationProperty',
  //   get: function get() {
  //     return this._rotationProperty;
  //   }
  // }]);
  return RotatableObjectLike;
}();

export default RotatableObjectLike;
